//
//  MDHPagerListRefreshView.swift
//  JSTech
//
//  Created by 高得华 on 2019/7/19.
//  Copyright © 2020 华&梅. All rights reserved.
//

import UIKit

open class MDHPagerListRefreshView: JXPagerView {
    fileprivate var lastScrollingListViewContentOffsetY: CGFloat = 0
    
    
    override open func initializeViews() {
        super.initializeViews()
        mainTableView.bounces = false
    }
    
    override open func preferredProcessMainTableViewDidScroll(_ scrollView: UIScrollView) {
        let maxOffsetY = mainTableViewMaxContentOffsetY//+kMMWPTFC().kNavSafeArea
        if pinSectionHeaderVerticalOffset != 0 {
            if scrollView.contentOffset.y == 0 {
                mainTableView.bounces = false
            }else {
                mainTableView.bounces = true
            }
        }
        if (self.currentScrollingListView != nil && self.currentScrollingListView!.contentOffset.y > 0) {
            //mainTableView的header已经滚动不见，开始滚动某一个listView，那么固定mainTableView的contentOffset，让其不动
            self.mainTableView.contentOffset = CGPoint(x: 0, y: maxOffsetY)//-kMMWPTFC().kNavSafeArea
        }
        
        if (mainTableView.contentOffset.y < maxOffsetY) {
            //mainTableView已经显示了header，listView的contentOffset需要重置
            for list in self.validListDict.values {
                let viewScroll = list.listScrollView()
                if viewScroll != nil && (viewScroll?.contentOffset.y ?? 0) > 0 {
                    viewScroll?.contentOffset = CGPoint.zero
                }
            }
        }
        
        if scrollView.contentOffset.y > maxOffsetY && self.currentScrollingListView?.contentOffset.y == 0 {
            //当往上滚动mainTableView的headerView时，滚动到底时，修复listView往上小幅度滚动
            self.mainTableView.contentOffset = CGPoint(x: 0, y: maxOffsetY)//-kMMWPTFC().kNavSafeArea
        }
    }
    
    override open func preferredProcessListViewDidScroll(_ scrollView: UIScrollView) {
        var shouldProcess = true
        let maxOffsetY = mainTableViewMaxContentOffsetY//-kMMWPTFC().kNavSafeArea
        if currentScrollingListView!.contentOffset.y > self.lastScrollingListViewContentOffsetY {
            //往上滚动
        }else {
            //往下滚动
            if self.mainTableView.contentOffset.y == 0 {
                shouldProcess = false
            }else {
                if (self.mainTableView.contentOffset.y < maxOffsetY) {
                    //mainTableView的header还没有消失，让listScrollView一直为0
                    currentScrollingListView!.contentOffset = CGPoint.zero;
                    currentScrollingListView!.showsVerticalScrollIndicator = false;
                }
            }
        }
        if shouldProcess {
            if (self.mainTableView.contentOffset.y < maxOffsetY) {
                //处于下拉刷新的状态，scrollView.contentOffset.y为负数，就重置为0
                if currentScrollingListView!.contentOffset.y > 0 {
                    //mainTableView的header还没有消失，让listScrollView一直为0
                    currentScrollingListView!.contentOffset = CGPoint.zero;
                    currentScrollingListView!.showsVerticalScrollIndicator = false;
                }
            } else {
                //mainTableView的header刚好消失，固定mainTableView的位置，显示listScrollView的滚动条
                self.mainTableView.contentOffset = CGPoint(x: 0, y: maxOffsetY);
                currentScrollingListView!.showsVerticalScrollIndicator = true;
            }
        }
        self.lastScrollingListViewContentOffsetY = currentScrollingListView!.contentOffset.y
    }
    
    
    
}
